package consume.jms.onetoone;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.jms.*;

/**
 * @author xiaohong
 * @version 1.0
 * @date 2021/11/14 0014 15:48
 * @description JMS 点对点模式 创建消费者 监听队列
 *
 * 监听器模式下一旦关闭就无法获取消息
 *
 */
public class JMSListenerController {

    public static void main(String[] args) throws Exception {
//        1.创建连接工厂
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://42.193.246.110:61616");
//        2.创建连接
        Connection connection = connectionFactory.createConnection();
//        3.打开连接
        connection.start();
//        4.创建session
        /**
         * 参数一 是否开启事务
         * 参数二 消息确认机制
         */
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

//        5.创建目标地址(Queue:点对点消息，Topic:发布订阅消息>
        Queue queue = session.createQueue("queue01");

//        6.创建消息消费者
        MessageConsumer consumer = session.createConsumer(queue);

//        7.设置消息监听器监听绑定队列消息
        consumer.setMessageListener(new MessageListener() {
            // 处理消息
            @Override
            public void onMessage(Message message) {
                TextMessage textMessage = (TextMessage) message;
                try {
                    System.out.println("点对点监听器接收到消息："+textMessage.getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });

    }


}
